Современный C++ (C++11/14/17) вводит Абстракции с нулевой стоимостью которые устраняют разрыв между низкоуровневым управлением аппаратными средствами и высоким уровнем читаемости. Эффективность достигается за счёт детерминированного управления памятью, а выразительность повышается благодаря логике на этапе компиляции.
1. Расположение памяти: std::array против std::vector
std::array является современным обёртыванием для массивов стиле С, выделенными на стеке с фиксированным размером, известным во время компиляции. В отличие от этого, std::vector располагается на куче и растёт динамически. Хотя std::vector использует геометрический коэффициент увеличения (часто $1.5\times$ или $2\times$), современный C++ предоставляет shrink_to_fit() для освобождения неиспользуемой ёмкости, обеспечивая более тонкое управление по сравнению с управляемыми языками, такими как Golang.
2. SFINAE и безопасность типов
Через std::enable_if и std::is_enum, разработчики могут реализовать Подстановка не является ошибкой (SFINAE). Это позволяет компилятору выбирать конкретные перегрузки функций на основе свойств типов во время компиляции, например, создавать универсальный оператор потока для перечислений, используя их std::underlying_type.
v.push_back(std::move(obj)); // Передача по перемещению
arr.at(0); // Проверка границ